package com.example.demo.mapper;

import com.example.demo.domain.*;
import com.example.demo.domain.DTO.*;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

/**
* @author z'z'w
* @description 针对表【SPOT_INFO】的数据库操作Mapper
* @createDate 2023-05-12 08:52:47
 * @Entity com.example.demo.domain.SpotInfo
 */
@Mapper
public interface SpotInfoMapper extends BaseMapper<SpotInfo> {
    //查询所有信息
    List<SpotInfo> selectAll();

    //热度前五的景点
    List<SpotHotInfo> selectHotInfoTop10();

    //星评前五的景点
    List<SpotGradeInfo> selectGradeTop10();

    /**
     * 推荐值数前10的景区
     */
    List<SpotInfo> selectRatingTop10();

    //根据景点ID获取景点信息
    SpotInfo selectSpotInfoById(@Param("spotid") int spotId);

    //季节最热门景区(x轴 季节 y轴 景区  z轴 该季度总评论数)
    List<SeasonSpotInfo> selectSeasonSpotInfo();

    /**
     * 查询景区评论最多的一个
     *
     * @return
     */
    SpotInfo selectMaxSum();

    /**
     * 返回景区搜索栏信息
     *
     * @return
     */
    List<SpotSearch> selectSpotOtherInfo();


    /**
     * 各景点评论数
     *
     * @return
     */
    List<SpotComCntInfo> selectSpotComCntInfo();


    /**
     * 返回某景点的五个指标
     *
     * @return 景点五个指标
     */
    SpotFiveInfo selectSpotFiveInfo(@Param("spotId") int spotId);


    /**
     * 返回集体景点的平均五个指标
     *
     * @return 集体景点五个指标
     */
    SpotAvgFiveInfo selectAllSpotAvgFiveInfo();


    /**
     * 返回每个月每个景区的评论数，平均值
     *
     * @return 返回每个月每个景区的评论数，平均值
     */
    List<SpotMonthInfo> selectSpotMonthInfo();


    /**
     * 某个景区来自各个省的游客数
     */
    List<SpotProvincePeopleNum> selectSpotProvincePeopleNum(@Param("spotId") int spotId);


    /**
     * rating前十景区的各月评论数
     *
     * @return
     */
    List<RatingTop10CntInfo> selectRatingTop10CntInfo();


    /**
     * rating前十的景区的 各省份来访人数
     */
    List<RatingTop10ProvinceInfo> selectRatingTop10ProvinceInfo();

    /**
     * 季节最热门景区评论数前十
     *
     * @return
     */
    List<SeasonSpot10Info> selectSeasonSpot10Info();

    /**
     * 景区等级数量
     */
    List<SpotLevelCnt> selectSpotLevelCnt();
}




